import { IPSApplicationObject } from '../ipsapplication-object';
import { IPSAppWFDE } from './ipsapp-wfde';
import { IPSAppWFUIAction } from './ipsapp-wfuiaction';
import { IPSAppWFVer } from './ipsapp-wfver';
import { IPSWorkflow } from '../../wf/ipsworkflow';

/**
 *
 * @export
 * @interface IPSAppWF
 */
export interface IPSAppWF extends IPSApplicationObject {
  /**
   * 工作流界面行为集合
   *
   * @type {IPSAppWFUIAction[]}
   */
  getAllPSAppWFUIActions(): IPSAppWFUIAction[] | null;

  /**
   * 工作流界面行为集合
   *
   * @type {IPSAppWFUIAction[]}
   */
  get allPSAppWFUIActions(): IPSAppWFUIAction[] | null;

  findPSAppWFUIAction(objKey: any): IPSAppWFUIAction | null;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 应用工作流实体集合
   *
   * @type {IPSAppWFDE[]}
   */
  getPSAppWFDEs(): IPSAppWFDE[] | null;

  /**
   * 应用工作流实体集合
   *
   * @type {IPSAppWFDE[]}
   */
  get psAppWFDEs(): IPSAppWFDE[] | null;

  findPSAppWFDE(objKey: any): IPSAppWFDE | null;

  /**
   * 应用工作流版本集合
   *
   * @type {IPSAppWFVer[]}
   */
  getPSAppWFVers(): IPSAppWFVer[] | null;

  /**
   * 应用工作流版本集合
   *
   * @type {IPSAppWFVer[]}
   */
  get psAppWFVers(): IPSAppWFVer[] | null;

  findPSAppWFVer(objKey: any): IPSAppWFVer | null;

  /**
   * 工作流
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflow(): IPSWorkflow | null;

  /**
   * 工作流
   *
   * @type {IPSWorkflow}
   */
  get psWorkflow(): IPSWorkflow | null;

  /**
   * 工作流（必须存在）
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflowMust(): IPSWorkflow;

  /**
   * 有工作流版本
   * @type {boolean}
   */
  get hasPSAppWFVer(): boolean | null;

  /**
   * 有工作流版本
   * @type {boolean}
   */
  getHasPSAppWFVer(): boolean | null;
}
